In binary instrumentation pieces or sections of binary code which may be called instrumentation fragments may be added to a compiled and linked program (also referred to herein as “binary image”) at various points in the program. These binary fragments may for example collect information relating to the execution of the compiled program. For example, in the case of a coverage tool, instrumentation fragments may be added at or in various basic blocks to count the number of times each basic block is reached. Other functionality may be performed. Some instrumentation fragments rely on registers to temporarily store information generated by the fragment or by the binary image as it runs. In some tools, a register may be associated with each instrumentation fragment that is inserted into a compiled binary code. In processors relying on architectures that use a register stack, it may be necessary to spill the data in a busy register before a thread processes an instrumentation fragment. Data that was in a busy register may be restored once the instrumentation fragment or a thread is completed. To facilitate a spill of busy registers, it may be necessary to identify free registers that may be linked with or available to an instrumentation fragment. One free register may be required to facilitate such spilling in an instrumentation in some processors using a register stack. This requirement may limit the instrumentation locations where binary fragments may be inserted to those where one or more free registers are available.